#include "PlanoX.h"

const Objeto_3D* PlanoX::Intercepta( Raio r_vis, float* t) const
{
  float y,z;

  //calcula-se o t da interseção do raio com o plano
  *t = (a - r_vis.X0()) / r_vis.Dx();

  if (*t<0)
    return(this);

  //se o t for maior que zero, verifica-se o ponto de interseção está
  //entre os limites que definem o segmento de plano
  y = r_vis.Y0() + (*t) * r_vis.Dy();
  if (INSIDE(y,bmin,bmax))
  {
    z = r_vis.Z0() + (*t)*r_vis.Dz();
    if (INSIDE(z,cmin,cmax))
      return this;
  }
  *t = -1.0;
  return this;
}

TexturePoint PlanoX::pontoTextura(const Ponto_3D& ponto) const
{
    return TexturePoint( (ponto.Y() - bmin)/(bmax-bmin) ,
                         (ponto.Z() - cmin)/(cmax-cmin) );
}
